package com.wzapp.sitposture.common.page;

import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;

import java.util.ArrayList;
import java.util.List;

@Data
public class CommonPage<T> {
    /**
     * 数据列表
     */
    private List<T> content = new ArrayList<>();
    /**
     * 列表统计数据
     */
    private JSONObject statistics;
    /**
     * 是否最后一页
      */
    private Boolean last ;
    /**
     * 总页数
     */
    private Integer totalPages;
    /**
     * 总数据个数
     */
    private Long totalElements;
    /**
     * 分页的每页个数
     */
    private Integer size;
    /**
     * 当前页码，从0开始
     */
    private Integer number;
    /**
     * 当前页个数
     */
    private Integer numberOfElements;
    /**
     * 是否首页
     */
    private Boolean first;
    /**
     * 排序字段
     */
    private Sort sort;

    public CommonPage() {
        this.setContent(new ArrayList<>());
        this.setNumber(0);
        this.setLast(true);
        this.setFirst(true);
    }

    public void setLast(Boolean last) {
        this.last = last;
    }

    public void setLast() {
        if(this.content == null || this.content.size() == 0){
            this.setLast(true);
        }else {
            if(this.number.equals(this.totalPages - 1)){
                this.setLast(true);
            }else {
                this.setLast(false);
            }
        }
    }

    public CommonPage(Page<T> page) {
        if (null != page) {
            this.setContent(page.getContent());
            this.setFirst(page.isFirst());
            this.setLast(page.isLast());
            this.setNumber(page.getNumber());
            this.setNumberOfElements(page.getNumberOfElements());
            this.setSize(page.getSize());
            this.setTotalElements(page.getTotalElements());
            this.setTotalPages(page.getTotalPages());
            this.setSort(page.getSort());
        }
    }
}
